/* eslint-disable @typescript-eslint/no-explicit-any */
/*
 *  Copyright 2021 Collate
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

 /**
 * 成本分析报告的聚合数据。
 */
export interface AggregatedCostAnalysisReportData {
    /**
     * 实体类型
     */
    entityType?: string;
    /**
     * 一段时间内频繁使用的数据资产的计数和大小
     */
    frequentlyUsedDataAssets?: DataAssetMetrics;
    /**
     * 服务名称
     */
    serviceName?: string;
    /**
     * 服务所有者的名称
     */
    serviceOwner?: string;
    /**
     * 服务类型
     */
    serviceType?: string;
    /**
     * 总计数
     */
    totalCount?: number;
    /**
     * 基于字节的总大小
     */
    totalSize?: number;
    /**
     * 一段时间内未使用的数据资产的计数和大小
     */
    unusedDataAssets?: DataAssetMetrics;
}

/**
 * 一段时间内频繁使用的数据资产的计数和大小
 *
 * 存储一段时间内数据资产的计数和字节大小
 *
 * 一段时间内未使用的数据资产的计数和大小
 */
export interface DataAssetMetrics {
    /**
     * 一段时间内的数据资产计数
     */
    count?: DataAssetValues;
    /**
     * 一段时间内的数据资产大小
     */
    size?: DataAssetValues;
    /**
     * 总计数
     */
    totalCount?: number;
    /**
     * 基于字节的总大小
     */
    totalSize?: number;
    [property: string]: any;
}

/**
 * 一段时间内的数据资产计数
 *
 * 数据资产在一段时间内的计数或字节大小
 *
 * 一段时间内的数据资产大小
 */
export interface DataAssetValues {
    /**
     * 14天内的数据资产计数或大小
     */
    fourteenDays?: number | null;
    /**
     * 7天内的数据资产计数或大小
     */
    sevenDays?: number | null;
    /**
     * 60天内的数据资产计数或大小
     */
    sixtyDays?: number | null;
    /**
     * 30天内的数据资产计数或大小
     */
    thirtyDays?: number | null;
    /**
     * 3天内的数据资产计数或大小
     */
    threeDays?: number | null;
}
